home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Programming / Warp3D_Devel / Include / gcc-WarpUp / Warp3D / Warp3D_protos.h
Encoding:
C/C++ Source or Header  |  2001-05-10  |  13.1 KB  |  229 lines

  1. #ifndef WARP3D_GCCLIB_PROTOS_H
  2. #define WARP3D_GCCLIB_PROTOS_H
  3.  
  4.  
  5.  
  6. #ifdef __PPC__
  7. #include <utility/tagitem.h>
  8. #include <stdarg.h>
  9.  
  10. extern struct Library *Warp3DPPCBase;
  11.  
  12. #include <powerpc/warpup_macros.h>
  13.  
  14. /************************** Context functions ***********************************/
  15. #define W3D_CreateContext(v1,v2)    PPCLP2  (Warp3DPPCBase,-30,W3D_Context *,   ULONG *,3,v1,struct TagItem *,4,v2)
  16. static inline W3D_Context  *W3D_CreateContextTags(ULONG *error, Tag tag1, ...)
  17. {
  18.     static struct TagItem _tags[20];
  19.     int i = 0;
  20.     va_list marker;
  21.  
  22.     if (tag1 == TAG_DONE)
  23.     {
  24.         _tags[0].ti_Tag = TAG_DONE;
  25.         return W3D_CreateContext(error, _tags);
  26.     }
  27.  
  28.     _tags[i].ti_Tag = tag1;
  29.  
  30.     va_start (marker, tag1);
  31.     do
  32.     {
  33.         _tags[i].ti_Data = va_arg(marker, ULONG);
  34.         i++;
  35.         _tags[i].ti_Tag = va_arg(marker, ULONG);
  36.     }
  37.     while (_tags[i].ti_Tag != TAG_DONE);
  38.  
  39.     va_end(marker);
  40.     return W3D_CreateContext(error, _tags);
  41. }
  42.  
  43.  
  44. #define W3D_DestroyContext(v1)      PPCLP1NR(Warp3DPPCBase,-36,         W3D_Context *,3,v1)
  45. #define W3D_GetState(v1,v2)     PPCLP2  (Warp3DPPCBase,-42,ULONG,       W3D_Context *,3,v1,ULONG,4,v2)
  46. #define W3D_SetState(v1,v2,v3)      PPCLP3  (Warp3DPPCBase,-48,ULONG,       W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3)
  47. #define W3D_Hint(v1,v2,v3)      PPCLP3  (Warp3DPPCBase,-294,ULONG,      W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3)
  48.  
  49. /************************** Hardware/Driver functions ***************************/
  50. #define W3D_CheckDriver()       PPCLP0  (Warp3DPPCBase,-54,ULONG        )
  51. #define W3D_LockHardware(v1)        PPCLP1  (Warp3DPPCBase,-60,ULONG,       W3D_Context *,3,v1)
  52. #define W3D_UnLockHardware(v1)      PPCLP1NR(Warp3DPPCBase,-66,         W3D_Context *,3,v1)
  53. #define W3D_WaitIdle(v1)        PPCLP1NR(Warp3DPPCBase,-72,         W3D_Context *,3,v1)
  54. #define W3D_CheckIdle(v1)       PPCLP1  (Warp3DPPCBase,-78,ULONG,       W3D_Context *,3,v1)
  55. #define W3D_Query(v1,v2,v3)     PPCLP3  (Warp3DPPCBase,-84,ULONG,       W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3)
  56. #define W3D_GetTexFmtInfo(v1,v2,v3) PPCLP3  (Warp3DPPCBase,-90,ULONG,       W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3)
  57. #define W3D_GetDriverState(v1)      PPCLP1  (Warp3DPPCBase,-306,ULONG,      W3D_Context *,3,v1)
  58. #define W3D_GetDestFmt()        PPCLP0  (Warp3DPPCBase,-384,ULONG       )
  59. #define W3D_GetDrivers()        PPCLP0  (Warp3DPPCBase,-402,W3D_Driver **   )
  60. #define W3D_QueryDriver(v1,v2,v3)   PPCLP3  (Warp3DPPCBase,-408,ULONG,      W3D_Driver *,3,v1,ULONG,4,v2,ULONG,5,v3)
  61. #define W3D_GetDriverTexFmtInfo(v1,v2,v3) PPCLP3(Warp3DPPCBase,-414,ULONG,      W3D_Driver *,3,v1,ULONG,4,v2,ULONG,5,v3)
  62. #define W3D_RequestMode(v1)     PPCLP1  (Warp3DPPCBase,-420,ULONG,      struct TagItem *,3,v1)
  63. static inline ULONG W3D_RequestModeTags(Tag tag1, ...)
  64. {
  65.     static struct TagItem _tags[20];
  66.     int i = 0;
  67.     va_list marker;
  68.  
  69.     if (tag1 == TAG_DONE)
  70.     {
  71.         _tags[0].ti_Tag = TAG_DONE;
  72.         return W3D_RequestMode(_tags);
  73.     }
  74.  
  75.     _tags[i].ti_Tag = tag1;
  76.  
  77.     va_start (marker, tag1);
  78.     do
  79.     {
  80.         _tags[i].ti_Data = va_arg(marker, ULONG);
  81.         i++;
  82.         _tags[i].ti_Tag = va_arg(marker, ULONG);
  83.     }
  84.     while (_tags[i].ti_Tag != TAG_DONE);
  85.  
  86.     va_end(marker);
  87.     return W3D_RequestMode(_tags);
  88. }
  89.  
  90. #define W3D_TestMode(v1)        PPCLP1  (Warp3DPPCBase,-438,W3D_Driver *,   ULONG,3,v1)
  91.  
  92. /************************** Texture functions ***********************************/
  93. #define W3D_AllocTexObj(v1,v2,v3)   PPCLP3  (Warp3DPPCBase,-96,W3D_Texture *,   W3D_Context *,3,v1,ULONG *,4,v2,struct TagItem *,5,v3)
  94. static inline W3D_Texture *W3D_AllocTexObjTags(W3D_Context *context, ULONG *error, Tag tag1, ...)
  95. {
  96.     static struct TagItem _tags[20];
  97.     int i = 0;
  98.     va_list marker;
  99.  
  100.     if (tag1 == TAG_DONE)
  101.     {
  102.         _tags[0].ti_Tag = TAG_DONE;
  103.         return W3D_AllocTexObj(context, error, _tags);
  104.     }
  105.  
  106.     _tags[i].ti_Tag = tag1;
  107.  
  108.     va_start (marker, tag1);
  109.     do
  110.     {
  111.         _tags[i].ti_Data = va_arg(marker, ULONG);
  112.         i++;
  113.         _tags[i].ti_Tag = va_arg(marker, ULONG);
  114.     }
  115.     while (_tags[i].ti_Tag != TAG_DONE);
  116.  
  117.     va_end(marker);
  118.     return W3D_AllocTexObj(context, error, _tags);
  119. }
  120.  
  121. #define W3D_FreeTexObj(v1,v2)       PPCLP2NR(Warp3DPPCBase,-102,            W3D_Context *,3,v1,W3D_Texture *,4,v2)
  122. #define W3D_ReleaseTexture(v1,v2)   PPCLP2NR(Warp3DPPCBase,-108,            W3D_Context *,3,v1,W3D_Texture *,4,v2)
  123. #define W3D_FlushTextures(v1,v2)    PPCLP1NR(Warp3DPPCBase,-114,            W3D_Context *,3,v1)
  124. #define W3D_SetFilter(v1,v2,v3,v4)  PPCLP4  (Warp3DPPCBase,-120,ULONG,      W3D_Context *,3,v1,W3D_Texture *,4,v2,ULONG,5,v3,ULONG,6,v4)
  125. #define W3D_SetTexEnv(v1,v2,v3,v4)  PPCLP4  (Warp3DPPCBase,-126,ULONG,      W3D_Context *,3,v1,W3D_Texture *,4,v2,ULONG,5,v3,W3D_Color *,6,v4)
  126. #define W3D_SetWrapMode(v1,v2,v3,v4,v5) PPCLP5  (Warp3DPPCBase,-132,ULONG,      W3D_Context *,3,v1,W3D_Texture *,4,v2,ULONG,5,v3,ULONG,6,v4,W3D_Color *,7,v5)
  127. #define W3D_UpdateTexImage(v1,v2,v3,v4,v5)      PPCLP5(Warp3DPPCBase,-138,ULONG,      W3D_Context *,3,v1,W3D_Texture *,4,v2,void *,5,v3,ULONG,6,v4,ULONG *,7,v5)
  128. #define W3D_UpdateTexSubImage(v1,v2,v3,v4,v5,v6,v7) PPCLP7  (Warp3DPPCBase,-372,ULONG,      W3D_Context *,3,v1,W3D_Texture *,4,v2,void *,5,v3,ULONG,6,v4,ULONG *,7,v5,W3D_Scissor *,8,v6,ULONG,9,v7)
  129. #define W3D_UploadTexture(v1,v2)    PPCLP2  (Warp3DPPCBase,-144,ULONG,      W3D_Context *,3,v1,W3D_Texture *,4,v2)
  130. #define W3D_FreeAllTexObj(v1)       PPCLP1  (Warp3DPPCBase,-378,ULONG,      W3D_Context *,3,v1)
  131. #define W3D_SetChromaTestBounds(v1,v2,v3,v4,v5) PPCLP5(Warp3DPPCBase,-444,ULONG,       W3D_Context *,3,v1,W3D_Texture *,4,v2,ULONG,5,v3,ULONG,6,v4,ULONG,7,v5)
  132.  
  133. /************************** Drawing functions ***********************************/
  134. #define W3D_DrawLine(v1,v2)     PPCLP2  (Warp3DPPCBase,-150,ULONG,      W3D_Context *,3,v1,W3D_Line *,4,v2)
  135. #define W3D_DrawPoint(v1,v2)        PPCLP2  (Warp3DPPCBase,-156,ULONG,      W3D_Context *,3,v1,W3D_Point *,4,v2)
  136. #define W3D_DrawTriangle(v1,v2)     PPCLP2  (Warp3DPPCBase,-162,ULONG,      W3D_Context *,3,v1,W3D_Triangle *,4,v2)
  137. #define W3D_DrawTriFan(v1,v2)       PPCLP2  (Warp3DPPCBase,-168,ULONG,      W3D_Context *,3,v1,W3D_Triangles *,4,v2)
  138. #define W3D_DrawTriStrip(v1,v2)     PPCLP2  (Warp3DPPCBase,-174,ULONG,      W3D_Context *,3,v1,W3D_Triangles *,4,v2)
  139. #define W3D_Flush(v1)           PPCLP1  (Warp3DPPCBase,-312,ULONG,      W3D_Context *,3,v1)
  140. #define W3D_DrawLineStrip(v1,v2)    PPCLP2  (Warp3DPPCBase,-390,ULONG,      W3D_Context *,3,v1,W3D_Lines *,4,v2)
  141. #define W3D_DrawLineLoop(v1,v2)     PPCLP2  (Warp3DPPCBase,-396,ULONG,      W3D_Context *,3,v1,W3D_Lines *,4,v2)
  142. #define W3D_ClearDrawRegion(v1, v2) PPCLP2  (Warp3DPPCBase,-450,ULONG,      W3D_Context *,3,v1,ULONG,4,v2)
  143.  
  144. /************************** Effect functions ************************************/
  145. #define W3D_SetAlphaMode(v1,v2,v3)  PPCLP3  (Warp3DPPCBase,-180,ULONG,      W3D_Context *,3,v1,ULONG,4,v2,W3D_Float *,5,v3)
  146. #define W3D_SetBlendMode(v1,v2,v3)  PPCLP3  (Warp3DPPCBase,-186,ULONG,      W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3)
  147. #define W3D_SetDrawRegion(v1,v2,v3,v4)  PPCLP4  (Warp3DPPCBase,-192,ULONG,      W3D_Context *,3,v1,struct BitMap *,4,v2,int,5,v3,W3D_Scissor *,6,v4)
  148. #define W3D_SetDrawRegionWBM(v1,v2,v3)  PPCLP3  (Warp3DPPCBase,-300,ULONG,      W3D_Context *,3,v1,W3D_Bitmap *,4,v2,W3D_Scissor *,5,v3)
  149. #define W3D_SetFogParams(v1,v2,v3)  PPCLP3  (Warp3DPPCBase,-198,ULONG,      W3D_Context *,3,v1,W3D_Fog *,4,v2,ULONG,5,v3)
  150. #define W3D_SetLogicOp(v1,v2)       PPCLP2  (Warp3DPPCBase,-288,ULONG,      W3D_Context *,3,v1,ULONG,4,v2)
  151. #define W3D_SetColorMask(v1,v2,v3,v4,v5)    PPCLP5  (Warp3DPPCBase,-204,ULONG,      W3D_Context *,3,v1,W3D_Bool,4,v2,W3D_Bool,5,v3,W3D_Bool,6,v4,W3D_Bool,7,v5)
  152. #define W3D_SetPenMask(v1,v2)       PPCLP2  (Warp3DPPCBase,-318,ULONG,      W3D_Context *,3,v1,ULONG,4,v2)
  153. #define W3D_SetCurrentColor(v1,v2)  PPCLP2  (Warp3DPPCBase,-360,ULONG,      W3D_Context *,3,v1,W3D_Color *,4,v2)
  154. #define W3D_SetCurrentPen(v1,v2)    PPCLP2  (Warp3DPPCBase,-366,ULONG,      W3D_Context *,3,v1,ULONG,4,v2)
  155. #define W3D_SetScissor(v1,v2)       PPCLP2NR(Warp3DPPCBase,-426,            W3D_Context *,3,v1,W3D_Scissor *,4,v2)
  156. #define W3D_FlushFrame(v1)      PPCLP1NR(Warp3DPPCBase,-432,            W3D_Context *,3,v1)
  157.  
  158. /************************** ZBuffer functions ***********************************/
  159. #define W3D_AllocZBuffer(v1)        PPCLP1  (Warp3DPPCBase,-216,ULONG,      W3D_Context *,3,v1)
  160. #define W3D_FreeZBuffer(v1)     PPCLP1  (Warp3DPPCBase,-222,ULONG,      W3D_Context *,3,v1)
  161. #define W3D_ClearZBuffer(v1,v2)     PPCLP2  (Warp3DPPCBase,-228,ULONG,      W3D_Context *,3,v1,W3D_Double *,4,v2)
  162. #define W3D_ReadZPixel(v1,v2,v3,v4) PPCLP4  (Warp3DPPCBase,-234,ULONG,      W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3,W3D_Double *,6,v4)
  163. #define W3D_ReadZSpan(v1,v2,v3,v4,v5)   PPCLP5  (Warp3DPPCBase,-240,ULONG,      W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3,ULONG,6,v4,W3D_Double *,7,v5)
  164. #define W3D_SetZCompareMode(v1,v2)  PPCLP2  (Warp3DPPCBase,-246,ULONG,      W3D_Context *,3,v1,ULONG,4,v2)
  165. #define W3D_WriteZPixel(v1,v2,v3,v4)    PPCLP4  (Warp3DPPCBase,-348,ULONG,      W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3,W3D_Double *,6,v4)
  166. #define W3D_WriteZSpan(v1,v2,v3,v4,v5,v6)   PPCLP6  (Warp3DPPCBase,-354,ULONG,      W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3,ULONG,6,v4,W3D_Double *,7,v5,UBYTE *,8,v6)
  167.  
  168. /************************** StencilBuffer functions *****************************/
  169. #define W3D_AllocStencilBuffer(v1)  PPCLP1  (Warp3DPPCBase,-252,ULONG,      W3D_Context *,3,v1)
  170. #define W3D_ClearStencilBuffer(v1,v2)   PPCLP2  (Warp3DPPCBase,-258,ULONG,      W3D_Context *,3,v1,ULONG *,4,v2)
  171. #define W3D_FillStencilBuffer(v1,v2,v3,v4,v5,v6,v7) PPCLP2  (Warp3DPPCBase,-264,ULONG,      W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3,ULONG,6,v4,ULONG,7,v5,ULONG,8,v6,void *,9,v7)
  172. #define W3D_FreeStencilBuffer(v1)   PPCLP1  (Warp3DPPCBase,-270,ULONG,      W3D_Context *,3,v1)
  173. #define W3D_ReadStencilPixel(v1,v2,v3,v4)   PPCLP4  (Warp3DPPCBase,-276,ULONG,  W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3,ULONG *,6,v4)
  174. #define W3D_ReadStencilSpan(v1,v2,v3,v4,v5) PPCLP5  (Warp3DPPCBase,-282,ULONG,      W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3,ULONG,6,v4,ULONG *,7,v5)
  175. #define W3D_SetStencilFunc(v1,v2,v3,v4) PPCLP4  (Warp3DPPCBase,-210,ULONG,      W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3,ULONG,6,v4)
  176. #define W3D_SetStencilOp(v1,v2,v3,v4)   PPCLP4  (Warp3DPPCBase,-324,ULONG,      W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3,ULONG,6,v4)
  177. #define W3D_SetWriteMask(v1,v2)     PPCLP2  (Warp3DPPCBase,-330,ULONG,      W3D_Context *,3,v1,ULONG,4,v2)
  178. #define W3D_WriteStencilPixel(v1,v2,v3,v4)  PPCLP4  (Warp3DPPCBase,-336,ULONG,  W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3,ULONG,6,v4)
  179. #define W3D_WriteStencilSpan(v1,v2,v3,v4,v5,v6) PPCLP6  (Warp3DPPCBase,-342,ULONG,      W3D_Context *,3,v1,ULONG,4,v2,ULONG,5,v3,ULONG,6,v4,ULONG *,7,v5,UBYTE *,8,v6)
  180.  
  181. /*************************** V3 Vector functions **********************************/
  182. #define W3D_DrawTriangleV(v1, v2)   PPCLP2 (Warp3DPPCBase,-456,ULONG,   W3D_Context *,3,v1,W3D_TriangleV *,4,v2)
  183. #define W3D_DrawTriFanV(v1, v2)     PPCLP2 (Warp3DPPCBase,-462,ULONG,   W3D_Context *,3,v1,W3D_TrianglesV *,4,v2)
  184. #define W3D_DrawTriStripV(v1, v2)   PPCLP2 (Warp3DPPCBase,-468,ULONG,   W3D_Context *,3,v1,W3D_TrianglesV *,4,v2)
  185.  
  186. /*************************** V3 Screenmode functions ******************************/
  187. #define W3D_GetScreenmodeList()     PPCLP0  (Warp3DPPCBase,-474,W3D_ScreenMode * )
  188. #define W3D_FreeScreenmodeList(v1)  PPCLP1NR(Warp3DPPCBase,-480,        W3D_ScreenMode *,3,v1)
  189. #define W3D_BestModeID(v1)          PPCLP1  (Warp3DPPCBase,-486,ULONG,  struct TagItem *,3,v1)
  190. static inline ULONG W3D_BestModeIDTags(Tag tag1, ...)
  191. {
  192.     static struct TagItem _tags[20];
  193.     int i = 0;
  194.     va_list marker;
  195.  
  196.     if (tag1 == TAG_DONE)
  197.     {
  198.         _tags[0].ti_Tag = TAG_DONE;
  199.         return W3D_BestModeID(_tags);
  200.     }
  201.  
  202.     _tags[i].ti_Tag = tag1;
  203.  
  204.     va_start (marker, tag1);
  205.     do
  206.     {
  207.         _tags[i].ti_Data = va_arg(marker, ULONG);
  208.         i++;
  209.         _tags[i].ti_Tag = va_arg(marker, ULONG);
  210.     }
  211.     while (_tags[i].ti_Tag != TAG_DONE);
  212.  
  213.     va_end(marker);
  214.     return W3D_BestModeID(_tags);
  215. }
  216.  
  217. /*************************** V4 vertex array functions ******************************/
  218. #define W3D_VertexPointer(context,pointer,stride,mode,flags) PPCLP5(Warp3DPPCBase, -492, ULONG, W3D_Context *, 3, context, void *, 4, pointer, int, 5, stride, ULONG, 6, mode, ULONG, 7, flags)
  219. #define W3D_TexCoordPointer(context,pointer,stride,unit,off_v,off_w,flags) PPCLP7(Warp3DPPCBase, -498, ULONG, W3D_Context *, 3, context, void *, 4, pointer, int, 5, stride, int, 6, unit, int, 7, off_v, int, 8, off_w, ULONG, 9, flags)
  220. #define W3D_ColorPointer(context,pointer,stride,format,mode,flags) PPCLP6(Warp3DPPCBase, -504, ULONG, W3D_Context *, 3, context, void *, 4, pointer, int, 5, stride, ULONG, 6, format, ULONG, 7, mode, ULONG, 8, flags)
  221. #define W3D_BindTexture(context,tmu,texture) PPCLP3(Warp3DPPCBase, -510, ULONG, W3D_Context *, 3, context, ULONG, 4, tmu, W3D_Texture *, 5, texture)
  222. #define W3D_DrawArray(context,primitive,base,count) PPCLP4(Warp3DPPCBase, -516, ULONG, W3D_Context *, 3, context, ULONG, 4, primitive, ULONG, 5, base, ULONG, 6, count)
  223. #define W3D_DrawElements(context,primitive,type,count,indices) PPCLP5(Warp3DPPCBase, -522, ULONG, W3D_Context *, 3, context, ULONG, 4, primitive, ULONG, 5, type, ULONG, 6, count, void *, 7, indices)
  224. #define W3D_SetFrontFace(context, direction) PPCLP2NR(Warp3DPPCBase, -528, W3D_Context *, 3, context, ULONG, 4, direction)
  225.  
  226. #endif /* __PPC__ */
  227.  
  228. #endif /* POWERPC_GCCLIB_PROTOS_H */
  229.